#!/bin/bash

# 登录系统启动脚本
# 此脚本将启动Python API服务器和前端开发服务器

echo "🚀 启动登录系统..."
echo "==========================================="

# 检查端口占用情况
echo "📋 检查端口占用情况..."
echo "端口 8080 (Python API):" 
lsof -ti:8080 && echo "  ❌ 端口8080已被占用" || echo "  ✅ 端口8080可用"
echo "端口 3002 (前端开发服务器):"
lsof -ti:3002 && echo "  ❌ 端口3002已被占用" || echo "  ✅ 端口3002可用"

# 清理可能存在的进程
echo "\n🧹 清理旧进程..."
echo "清理端口8080上的进程..."
lsof -ti:8080 | xargs kill -9 2>/dev/null && echo "  ✅ 已清理端口8080" || echo "  ℹ️  端口8080无需清理"
echo "清理端口3002上的进程..."
lsof -ti:3002 | xargs kill -9 2>/dev/null && echo "  ✅ 已清理端口3002" || echo "  ℹ️  端口3002无需清理"

# 等待端口释放
echo "\n⏳ 等待端口释放..."
sleep 2

# 检查必要文件
echo "\n📁 检查必要文件..."
if [ ! -f "simple-login-api.py" ]; then
    echo "  ❌ 找不到 simple-login-api.py"
    exit 1
else
    echo "  ✅ simple-login-api.py 存在"
fi

if [ ! -d "admin" ]; then
    echo "  ❌ 找不到 admin 目录"
    exit 1
else
    echo "  ✅ admin 目录存在"
fi

if [ ! -f "admin/package.json" ]; then
    echo "  ❌ 找不到 admin/package.json"
    exit 1
else
    echo "  ✅ admin/package.json 存在"
fi

# 检查Node.js依赖
echo "\n📦 检查Node.js依赖..."
cd admin
if [ ! -d "node_modules" ]; then
    echo "  ⚠️  node_modules不存在，正在安装依赖..."
    npm install
    if [ $? -ne 0 ]; then
        echo "  ❌ npm install 失败"
        exit 1
    fi
    echo "  ✅ 依赖安装完成"
else
    echo "  ✅ node_modules 存在"
fi
cd ..

# 启动Python API服务器
echo "\n🐍 启动Python API服务器 (端口8080)..."
python3 simple-login-api.py &
PYTHON_PID=$!
echo "  Python API PID: $PYTHON_PID"

# 等待Python服务器启动
echo "\n⏳ 等待Python API服务器启动..."
sleep 3

# 检查Python服务器状态
echo "🔍 检查Python API服务器状态..."
if curl -s http://localhost:8080/health > /dev/null; then
    echo "  ✅ Python API服务器启动成功"
else
    echo "  ❌ Python API服务器启动失败"
    echo "  正在检查进程状态..."
    if ps -p $PYTHON_PID > /dev/null; then
        echo "  进程仍在运行，可能需要更多时间启动"
    else
        echo "  进程已退出，启动失败"
        exit 1
    fi
fi

# 启动前端开发服务器
echo "\n⚛️  启动前端开发服务器 (端口3002)..."
cd admin
npm run dev &
NODE_PID=$!
echo "  前端开发服务器 PID: $NODE_PID"
cd ..

# 等待前端服务器启动
echo "\n⏳ 等待前端开发服务器启动..."
sleep 5

# 检查前端服务器状态
echo "🔍 检查前端开发服务器状态..."
if curl -s http://localhost:3002 > /dev/null; then
    echo "  ✅ 前端开发服务器启动成功"
else
    echo "  ⚠️  前端开发服务器可能仍在启动中"
fi

# 显示启动完成信息
echo "\n🎉 启动完成！"
echo "==========================================="
echo "📊 服务状态:"
echo "  Python API服务器: http://localhost:8080"
echo "  前端开发服务器: http://localhost:3002"
echo "  登录测试页面: file://$(pwd)/login-test.html"
echo ""
echo "🔑 默认登录信息:"
echo "  邮箱: admin@example.com"
echo "  密码: admin123"
echo ""
echo "🌐 访问地址:"
echo "  后台管理系统: http://localhost:3002/login"
echo "  仪表盘: http://localhost:3002/dashboard"
echo "  API健康检查: http://localhost:8080/health"
echo ""
echo "📋 进程信息:"
echo "  Python API PID: $PYTHON_PID"
echo "  前端服务器 PID: $NODE_PID"
echo ""
echo "🛑 停止服务:"
echo "  停止Python API: kill $PYTHON_PID"
echo "  停止前端服务器: kill $NODE_PID"
echo "  或者按 Ctrl+C 停止此脚本"
echo ""
echo "🔧 调试工具:"
echo "  1. 打开登录测试页面测试API连接"
echo "  2. 检查浏览器开发者工具的网络和控制台"
echo "  3. 查看终端输出的详细日志"
echo ""
echo "✨ 系统已就绪，可以开始测试登录功能！"

# 保持脚本运行
echo "\n按 Ctrl+C 停止所有服务..."
trap 'echo "\n🛑 正在停止服务..."; kill $PYTHON_PID $NODE_PID 2>/dev/null; echo "✅ 服务已停止"; exit 0' INT

# 持续监控服务状态
while true; do
    sleep 30
    echo "\n📊 $(date): 服务状态检查"
    
    # 检查Python API
    if curl -s http://localhost:8080/health > /dev/null; then
        echo "  ✅ Python API: 运行正常"
    else
        echo "  ❌ Python API: 连接失败"
    fi
    
    # 检查前端服务器
    if curl -s http://localhost:3002 > /dev/null; then
        echo "  ✅ 前端服务器: 运行正常"
    else
        echo "  ❌ 前端服务器: 连接失败"
    fi
done